Skip to content

fix(BUG-8): clarify cooldownDuration units as seconds in NatSpec#433

Merged
mtabasco merged 4 commits intossv-stakingfrom
fix/BUG-8-cooldown-duration-units
Feb 25, 2026
Merged

fix(BUG-8): clarify cooldownDuration units as seconds in NatSpec#433
mtabasco merged 4 commits intossv-stakingfrom
fix/BUG-8-cooldown-duration-units

Conversation

@mtabasco
Copy link
Contributor

BUG-8: Cooldown duration uses block.timestamp but DIP specifies blocks.

The implementation correctly uses block.timestamp (seconds) for cooldown calculations in SSVStaking.requestUnstake() and calculateTotalUnfrozenBalance(). The deploy config already sets 604800 (7 days in seconds). However, the NatSpec documentation was ambiguous about the unit, risking future misconfiguration.

Changes:

  • ISSVDAO.sol: Add 'in seconds' to CooldownDurationUpdated event and setUnstakeCooldownDuration function NatSpec
  • SSVStorageStaking.sol: Add NatSpec comment documenting cooldownDuration field is in seconds
  • SSVNetworkSSVStakingUpgrade.sol: Add NatSpec to initializeSSVStaking documenting cooldownDuration param is in seconds (e.g. 604800 for 7 days)
  • requestUnstake.test.ts: Add BUG-8 regression test verifying unlockTime is derived from block.timestamp (not block.number)

No logic, ABI, or storage layout changes. NatSpec-only + regression test.

BUG-8: Cooldown duration uses block.timestamp but DIP specifies blocks.

The implementation correctly uses block.timestamp (seconds) for cooldown
calculations in SSVStaking.requestUnstake() and calculateTotalUnfrozenBalance().
The deploy config already sets 604800 (7 days in seconds). However, the NatSpec
documentation was ambiguous about the unit, risking future misconfiguration.

Changes:
- ISSVDAO.sol: Add 'in seconds' to CooldownDurationUpdated event and
  setUnstakeCooldownDuration function NatSpec
- SSVStorageStaking.sol: Add NatSpec comment documenting cooldownDuration
  field is in seconds
- SSVNetworkSSVStakingUpgrade.sol: Add NatSpec to initializeSSVStaking
  documenting cooldownDuration param is in seconds (e.g. 604800 for 7 days)
- requestUnstake.test.ts: Add BUG-8 regression test verifying unlockTime
  is derived from block.timestamp (not block.number)

No logic, ABI, or storage layout changes. NatSpec-only + regression test.
@github-actions
Copy link

github-actions bot commented Feb 17, 2026

Gas Usage Report

Commit: 09aced6
Branch: HEAD
All within limits: Yes

All operations are within gas limits.

@mtabasco mtabasco merged commit 8dac0dc into ssv-staking Feb 25, 2026
11 checks passed
@mtabasco mtabasco deleted the fix/BUG-8-cooldown-duration-units branch February 25, 2026 10:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant